package com.dragon.modules.yuegou.model.wallet;

import com.dragon.modules.yuegou.entity.wallet.EntityCardTradeEntity;
import com.dragon.modules.yuegou.enums.TradeStatus;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 实体卡交易记录模型类
 * 
 * @author pbuilder generated
 * @date 2021-04-02 10:42:50
 * @company sgy
 * @version 2.0
 * @see Length 长度限制
 * @see NotNull 对象非空
 * @see NotEmpty 字符串、集合、表、数组非空
 */
public class EntityCardTrade extends EntityCardTradeEntity {

	/**
	 * 构造一个空实体卡交易记录模型对象
	 */
	public EntityCardTrade(){
		super();
	}
	
	/**
	 * 依据实体对象的信息构造一个实体卡交易记录模型对象
	 * 
	 * @param entity 实体对象
	 */
	public EntityCardTrade(EntityCardTradeEntity entity){
		super(entity);
	}

	/**
	 * 依据其它对象的信息构造一个实体卡交易记录模型对象
	 * 
	 * @param other 其它对象
	 */
	public EntityCardTrade(EntityCardTrade other){
		super(other);
	}


	@Override
	public String getId() {
    	return id;
    }

    /**
	 * 设置会员悦卡交易记录ID
	 * 
	 * @param id 会员悦卡交易记录ID
	 * @return 当前对象
	 */
    public EntityCardTrade id(String id) {
    	this.id = id;
    	return this;
    }

	@Override
	public String getMemberId() {
    	return memberId;
    }

    /**
	 * 设置会员ID（冗余）
	 * 
	 * @param memberId 会员ID（冗余）
	 * @return 当前对象
	 */
    public EntityCardTrade memberId(String memberId) {
    	this.memberId = memberId;
    	return this;
    }

	@Override
	public String getMemberWalletId() {
    	return memberWalletId;
    }

    /**
	 * 设置会员钱包ID（冗余）
	 * 
	 * @param memberWalletId 会员钱包ID（冗余）
	 * @return 当前对象
	 */
    public EntityCardTrade memberWalletId(String memberWalletId) {
    	this.memberWalletId = memberWalletId;
    	return this;
    }

	@Override
	public String getMemberCardId() {
    	return memberCardId;
    }

    /**
	 * 设置会员悦卡ID
	 * 
	 * @param memberCardId 会员悦卡ID
	 * @return 当前对象
	 */
    public EntityCardTrade memberCardId(String memberCardId) {
    	this.memberCardId = memberCardId;
    	return this;
    }

	@Override
	public String getEntityCardId() {
    	return entityCardId;
    }

    /**
	 * 设置会员悦卡ID
	 * 
	 * @param entityCardId 会员悦卡ID
	 * @return 当前对象
	 */
    public EntityCardTrade entityCardId(String entityCardId) {
    	this.entityCardId = entityCardId;
    	return this;
    }

	@Override
	public String getEntityCardNo() {
    	return entityCardNo;
    }

    /**
	 * 设置会员悦卡卡号（冗余）
	 * 
	 * @param entityCardNo 会员悦卡卡号（冗余）
	 * @return 当前对象
	 */
    public EntityCardTrade entityCardNo(String entityCardNo) {
    	this.entityCardNo = entityCardNo;
    	return this;
    }

	@Override
	public String getCardTemplateId() {
    	return cardTemplateId;
    }

    /**
	 * 设置悦卡模板ID（冗余）
	 * 
	 * @param cardTemplateId 悦卡模板ID（冗余）
	 * @return 当前对象
	 */
    public EntityCardTrade cardTemplateId(String cardTemplateId) {
    	this.cardTemplateId = cardTemplateId;
    	return this;
    }

	@Override
	public String getMerchantId() {
    	return merchantId;
    }

    /**
	 * 设置商户ID（冗余）
	 * 
	 * @param merchantId 商户ID（冗余）
	 * @return 当前对象
	 */
    public EntityCardTrade merchantId(String merchantId) {
    	this.merchantId = merchantId;
    	return this;
    }

	@Override
	public String getMerchantWalletId() {
    	return merchantWalletId;
    }

    /**
	 * 设置商户钱包ID
	 * 
	 * @param merchantWalletId 商户钱包ID
	 * @return 当前对象
	 */
    public EntityCardTrade merchantWalletId(String merchantWalletId) {
    	this.merchantWalletId = merchantWalletId;
    	return this;
    }

	@Override
	public String getBusdId() {
    	return busdId;
    }

    /**
	 * 设置商圈ID（冗余）
	 * 
	 * @param busdId 商圈ID（冗余）
	 * @return 当前对象
	 */
    public EntityCardTrade busdId(String busdId) {
    	this.busdId = busdId;
    	return this;
    }

	@Override
	public String getOrderNo() {
    	return orderNo;
    }

    /**
	 * 设置订单号
	 * 
	 * @param orderNo 订单号
	 * @return 当前对象
	 */
    public EntityCardTrade orderNo(String orderNo) {
    	this.orderNo = orderNo;
    	return this;
    }

	@Override
	public BigDecimal getAmount() {
    	return amount;
    }

    /**
	 * 设置交易金额
	 * 
	 * @param amount 交易金额
	 * @return 当前对象
	 */
    public EntityCardTrade amount(BigDecimal amount) {
    	this.amount = amount;
    	return this;
    }

	@Override
	public BigDecimal getCardAmountBefore() {
    	return cardAmountBefore;
    }

    /**
	 * 设置交易前悦卡余额
	 * 
	 * @param cardAmountBefore 交易前悦卡余额
	 * @return 当前对象
	 */
    public EntityCardTrade cardAmountBefore(BigDecimal cardAmountBefore) {
    	this.cardAmountBefore = cardAmountBefore;
    	return this;
    }

	@Override
	public BigDecimal getCardAmountAfter() {
    	return cardAmountAfter;
    }

    /**
	 * 设置交易后悦卡余额
	 * 
	 * @param cardAmountAfter 交易后悦卡余额
	 * @return 当前对象
	 */
    public EntityCardTrade cardAmountAfter(BigDecimal cardAmountAfter) {
    	this.cardAmountAfter = cardAmountAfter;
    	return this;
    }

	@Override
	public TradeStatus getTradeStatus() {
    	return tradeStatus;
    }

    /**
	 * 设置[全局枚举]交易状态：0-会员支出-MEMBER_OUT、1-商户入账-MERCHANT_IN、2-交易确认(进入商户可提现账户)-CONFIRMED、3-中止交易(退款)-STOPPED
	 * 
	 * @param tradeStatus [全局枚举]交易状态：0-会员支出-MEMBER_OUT、1-商户入账-MERCHANT_IN、2-交易确认(进入商户可提现账户)-CONFIRMED、3-中止交易(退款)-STOPPED
	 * @return 当前对象
	 */
    public EntityCardTrade tradeStatus(TradeStatus tradeStatus) {
    	this.tradeStatus = tradeStatus;
    	return this;
    }

	@Override
	public LocalDateTime getCreatedTime() {
    	return createdTime;
    }

    /**
	 * 设置交易时间
	 * 
	 * @param createdTime 交易时间
	 * @return 当前对象
	 */
    public EntityCardTrade createdTime(LocalDateTime createdTime) {
    	this.createdTime = createdTime;
    	return this;
    }

	@Override
	public LocalDateTime getIncomeTime() {
    	return incomeTime;
    }

    /**
	 * 设置入账时间
	 * 
	 * @param incomeTime 入账时间
	 * @return 当前对象
	 */
    public EntityCardTrade incomeTime(LocalDateTime incomeTime) {
    	this.incomeTime = incomeTime;
    	return this;
    }

	@Override
	public LocalDateTime getStoppedTime() {
    	return stoppedTime;
    }

    /**
	 * 设置中止时间
	 * 
	 * @param stoppedTime 中止时间
	 * @return 当前对象
	 */
    public EntityCardTrade stoppedTime(LocalDateTime stoppedTime) {
    	this.stoppedTime = stoppedTime;
    	return this;
    }
}
